package com.mali.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mali.common.dto.*;
import com.mali.common.web.domain.dto.*;
import com.mali.user.domain.po.User;
import com.mali.user.domain.vo.AllUserVO;
import com.mali.user.domain.vo.LoginVO;
import com.mali.user.domain.vo.RegisterVO;
import com.mali.user.domain.vo.UserVO;


public interface UserService extends IService<User> {
    /**
     *  注册
     * @param registerDTO 注册信息
     * @return 注册结果
     */
    Result<RegisterVO> register(RegisterDTO registerDTO);

    /**
     *  获取验证码
     * @param phone 手机号
     * @return 验证码
     */
    Result<String> getCode(CodeDTO phone);

    /**
     *  手机号登录
     * @param codeLoginDTO 登录信息
     * @return 登录结果
     */
    Result<LoginVO> login(CodeLoginDTO codeLoginDTO);

    /**
     *  登录
     * @param passwordLoginDTO 登录信息
     * @return 登录结果
     */
    Result<LoginVO> login(PasswordLoginDTO passwordLoginDTO);

    /**
     * 分页获取用户列表
     *
     * @param pageRequestDTO 分页请求信息
     * @return 用户信息
     */
    Result<AllUserVO> getUserList(PageRequestDTO pageRequestDTO);

    /**
     *  获取用户信息
     * @param userId 用户id
     * @return 用户信息
     */
    Result<UserVO> getUserInfo(Long userId);

    /**
     * 更新用户信息
     *
     * @param userId     用户id
     * @param userUpdateDTO 更新信息
     * @return 更新结果
     */
    Result<String> updateUser(Long userId, UserUpdateDTO userUpdateDTO);

    /**
     *  重置密码
     * @param resetPwdDTO 重置密码信息
     * @return 重置结果
     */
    Result<String> resetPassword(ResetPwdDTO resetPwdDTO);
}
